home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
PROGRAMM
/
PASCAL
/
0514.ZIP
/
CRAYZ15.ARC
/
DECOMP.FOR
< prev
next >
Wrap
Text File
|
1986-09-22
|
2KB
|
58 lines
C COLLECTED ALGORITHMS FROM CACM
C
C ALGORITHM 423
C LINEAR EQUATION SOLVER
C CLEVE B. MOLER
C DEPARTMENT OF MATHEMATICS, UNIVERSITY OF MICHIGAN
C ANN ARBOR, MICHIGAN 48104
C RECD. 1 JULY 1970 AND 1 DEC. 1970
C
SUBROUTINE DECOMP(N, NDIM, A, IP)
REAL A(NDIM,NDIM),t
INTEGER IP(NDIM)
C
C MATRIX TRIANGULARIZATION BY GAUSSIAN ELIMINATION.
C INPUT..
C N = ORDER OF MATRIX.
C NDIM = DECLARED DIMENSION OF ARRAY A .
C A = MATRIX TO BE TRIANGULARIZED.
C OUTPUT..
C A(I,J), I.LE.J = UPPER TRIANGULAR FACTOR, U .
C A(I,J), I.GT.J = MULTIPLIERS = LOWER TRIANGULAR
C FACTOR, I-L .
C IP(K), K.LT.N = INDEX OF K-TH PIVOT ROW.
C IP(N) = (-1)**(NUMBER OF INTERCHANGES) OR 0 .
C USE 'SOLVE' TO OBTAIN SOLUTION OF LINEAR SYSTEM.
C DETERM(A) = IP(N)*A(1,1)*A(2,2)*...*A(N,N).
C IF IP(N)=0, A IS SINGULAR, SOLVE WILL DIVIDE BY ZERO.
C INTERCHANGES FINISHED IN U , ONLY PARTLY IN L .
C
IP(N) = 1
DO 6 K = 1,N
IF(K.EQ.N) GO TO 5
KP1 = K+1
M = K
DO 1 I = KP1,N
IF(ABS(A(I,K)).GT.ABS(A(M,K))) M = I
1 CONTINUE
IP(K) = M
IF(M.NE.K) IP(N) = -IP(N)
T = A(M,K)
A(M,K) = A(K,K)
A(K,K) = T
IF(T.EQ.0.) GO TO 5
DO 2 I = KP1,N
2 A(I,K) = -A(I,K)/T
DO 4 J = KP1,N
T = A(M,J)
A(M,J) = A(K,J)
A(K,J) = T
IF(T.EQ.0.) GO TO 4
DO 3 I = KP1,N
3 A(I,J) = A(I,J) + A(I,K)*T
4 CONTINUE
5 IF(A(K,K).EQ.0.) IP(N) = 0
6 CONTINUE
RETURN
END